package com.zw.mes.module.tecard.mapper;

import com.zw.mes.entity.flow.FlowRoute;
import com.zw.mes.entity.flow.FlowSheet;
import com.zw.mes.entity.technology.Tecard;
import com.zw.mes.module.prodtaskmanager.entity.ProdOrd;
import com.zw.mes.module.prodtaskmanager.entity.VwProject;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TecardMapper {

    /** 旧 查询工艺卡接收列表页*/
    List<Tecard> getCardRevice(Tecard tecard);
    /** 新 查询工艺卡接收列表页*/
    List<Tecard> getGroupByCardRevice(Tecard tecard);

    /** 查询工艺卡明细*/
    List<Tecard> getMakeDetail(Tecard tecard);
    /** 查询工艺卡明细中工艺卡数量 */
    Integer getMakeDetailCount(Tecard tecard);


    /** 查询工艺卡变更明细 */
    List<Tecard> getMakeDetailcha(Tecard tecard);
    /** 查询工艺卡变更明细中工艺卡数量 */
    Integer getMakeDetailchaCount(Tecard tecard);

    /** 查询工艺卡明细*/
    List<Tecard> getMakeDetailOld(Tecard tecard);
    /** 查询已接收的工艺卡 */
    List<Tecard> getMakeDetailLocal(Tecard tecard);
    /** 查询工艺卡明细中工艺卡数量*/
    Integer getMakeDetailOldCount(Tecard tecard);

    /** 按主键查询主单 */
    Tecard getOne(Integer id);

    /** 查询工艺卡明细 */
    List<Tecard> findByCardId(Integer id);
    /** 查询工艺卡异常明细 */
    List<Tecard> findAbnormalDataByCardId(Integer id);

    /** 查询项目下有工艺卡的主单信息列表*/
    List<Tecard> getSheetDetail(Tecard tecard);

    /** 将接收过来的工艺卡主表接收到生产工艺卡主表里面*/
    int addCarSheet(Tecard tecard1);

    /** 将接收过来的工艺卡从表明细接收到生产工艺卡从表明细里面*/
    int addCarFlowDetail(Tecard craPlan);

    /** 将接收过来的工艺卡从表明细根据路线去重然后接收到生产工艺卡路线明细表里面*/
    int addCarFlowRoute(Tecard route1);

    int updateCarSheet(Tecard tecard1);

    int updateCardMakeSheet(Tecard tecard);

    /** 打印工艺卡列表 */
    List<FlowSheet> findWithCardQuery(Tecard tecard);

    /** 批量打印工艺卡*/
    List<Tecard> findByIds(Integer[] ids);

    /** 修改生产令表里面的状态*/
    void updateProdOrd(String proCode);

    int findProdOrd(Tecard tecard);

    /** 查询创建人的电话号码*/
    String findCreateTel(@Param("createCode") String createCode);

    /** 按主键查询生产工艺主单 */
    Tecard getProdCardById(Integer id);

    /** 查询生产图号的工艺卡明细 */
    List<Tecard> findProdCardDetailByCardId(Integer id);

    FlowSheet findFlowSheetId(@Param("id") Integer id);

    Integer deleteFlowDetail(@Param("id") Integer id);

    List<FlowRoute> findFlowRoutes(@Param("id") Integer id);

    int deleteFlowRoutes(Integer id);

    /**
     * @methodName: getVwCraCardSheetByCndition
     * @description: 根据条件获取工艺卡明细列表
     * @param: condition
     * @return： java.util.List<com.zw.mes.entity.technology.Tecard>
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/29 10:22
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    List<Tecard> getVwCraCardSheetByCndition(Tecard condition);
    /**
     * @methodName: getVwProjectByProCode
     * @description: 根据项目号获取项目信息
     * @param: proCode
     * @return： com.zw.mes.module.prodtaskmanager.entity.VwProject
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/31 12:54
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    VwProject getVwProjectByProCode(@Param("proCode") String proCode);

    /**
     * 根据项目号获取生产令列表
     * @param proCode
     * @return
     */
    List<ProdOrd> findProdOrdByProdCod(@Param("proCode") String proCode);

    /**
     * 根据查询生产的工艺卡主表id修改删除状态
     * @param id
     * @param
     * @return
     */
    int updateFlowSheet(@Param("id") Integer id, @Param("isDel") Integer isDel);
    int updateflowSheetDetail(@Param("id") Integer id, @Param("isDel") Integer isDel);
    int updateflowRoute(@Param("id") Integer id, @Param("isDel") Integer isDel);

    int selectTecardCount();
}
